package com.ruoyi.system.mapper.trade;

import com.ruoyi.system.domain.db.trade.TradeCargoOrder;
import com.ruoyi.system.domain.dto.TradeCargoOrderDto;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface TradeCargoOrderMapper {
    /**
     * 查询订单
     *
     * @param orderId 订单主键
     * @return 订单
     */
    public TradeCargoOrderDto selectTradeCargoOrderByOrderId(Long orderId);

    /**
     * 查询订单列表
     *
//     * @param tradeCargoOrder 订单
     * @return 订单集合
     */
    public List<TradeCargoOrderDto> selectTradeCargoOrderList(TradeCargoOrder tradeCargoOrder);

    /**
     * 获取运输任务的货物信息
     */
    public List<TradeCargoOrderDto> selectCargoInfoByTaskId(Long taskId);

    /**
     * 新增订单管理
     *
     * @param tradeCargoOrder 订单管理
     * @return 结果
     */
    public int insertTradeCargoOrder(TradeCargoOrder tradeCargoOrder);

    /**
     * 修改订单管理
     *
     * @param tradeCargoOrder 订单管理
     * @return 结果
     */
    public int updateTradeCargoOrder(TradeCargoOrder tradeCargoOrder);

    /**
     * 删除订单管理
     *
     * @param orderId 订单主键
     * @return 结果
     */
    public int deleteTradeCargoOrderByOrderId(Long orderId);

    /**
     * 批量删除订单管理
     *
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTradeCargoOrderByOrderIds(List<Long> orderIds);

    /**
     * 查询任务id
     */
    public Long selectOrderIdByCreatetimeAndUserId(@Param("createBy") Long userId, @Param("createTime") Date createTime);

    /**
     * 查询未发货订单列表
     * @return
     */
    List<TradeCargoOrderDto> selectUnDeliveriedCargoOrderList();

    /**
     * 根据运输任务id更新订单状态
     */
    int updateTradeCargoOrderStateByTaskId(Long taskId, int state, Date updateTime);

}
